// 导入compression-webpack-plugin
const CompressionWebpackPlugin = require('compression-webpack-plugin')
const VueLoaderPlugin = require('vue-loader/lib/plugin');

// 定义压缩文件类型
const productionGzipExtensions = ['js', 'css']
// 基础路径 注意发布之前要先修改这里
let baseUrl = './'

const path = require('path')

function resolve(dir) {
  return path.join(__dirname, '.', dir)
}

// const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin
module.exports = {
  publicPath: baseUrl, // 根据你的实际情况更改这里
  lintOnSave: true,
  productionSourceMap: false,
  // configureWebpack: config => {
  //     if (process.env.NODE_ENV === 'production') {
  //         return {
  //             plugins: [
  //                 new BundleAnalyzerPlugin()
  //             ]
  //         }
  //     }
  // },
  configureWebpack: {
    plugins: [
      new CompressionWebpackPlugin({
        filename: '[path].gz[query]',
        algorithm: 'gzip',
        test: new RegExp('\\.(' + productionGzipExtensions.join('|') + ')$'),
        threshold: 10240,
        minRatio: 0.5
      })
    ]
  },
  chainWebpack: (config) => {
    //忽略的打包文件
    config.externals({
      'vue': 'Vue',
      'vue-router': 'VueRouter',
      'vuex': 'Vuex',
      'axios': 'axios',
      'element-ui': 'ELEMENT'
    })
    const entry = config.entry('app')
    entry
      .add('babel-polyfill')
      .end()
    entry
      .add('classlist-polyfill')
      .end()
    entry
      .add('@/mock')
      .end()

    config.module
      .rule('svg')
      .exclude.add(resolve('src/icons'))
      .end()
    config.module
      .rule('icons')
      .test(/\.svg$/)
      .include.add(resolve('src/icons'))
      .end()
      .use('svg-sprite-loader')
      .loader('svg-sprite-loader')
      .options({
        symbolId: 'icon-[name]'
      })
      .end()
  },
  // devServer: {
  //   // 端口配置
  //   port: 2888,
  //   // 反向代理配置
  //   proxy: {
  //     '/tool': {
  //       target: 'http://47.115.35.201:8007',
  //       changeOrigin: true
  //     },
  //     '/platform': {
  //       target: 'http://47.115.35.201:8006',
  //       changeOrigin: true
  //     },
  //     '/general': {
  //       target: 'http://47.115.35.201:8005',
  //       changeOrigin: true
  //     },
  //     '/biz': {
  //       target: 'http://47.115.35.201:8009',
  //       changeOrigin: true
  //     },
  //     '/dooleenApi': {
  //       target: 'http://47.115.35.201:8002',
  //       changeOrigin: true
  //     },
  //     '/file': {
  //       target: 'http://47.115.35.201:8004',
  //       changeOrigin: true
  //     },
  //     '/dooleenApi': {
  //       target: 'http://oauth2.dooleen.com:8403',
  //       changeOrigin: true
  //     },
  //     '/group1': {
  //       target: 'http://192.168.43.121:8888',
  //       changeOrigin: true
  //     },
  //     '/dooleenReport': {
  //       target: 'http://47.115.35.201:8011',
  //       changeOrigin: true
  //     },
  //   }
  // }
  devServer: {
    disableHostCheck: true,
    https: false,
    // 端口配置
    port: 2889,
    // 反向代理配置
    proxy: {
      '/dooleenReport': {
        target: 'http://127.0.0.1:8001',
        changeOrigin: true
      },
      '/tool': {
        target: 'http://127.0.0.1:8001',
        changeOrigin: true
      },
      '/platform': {
        target: 'http://127.0.0.1:8001',
        changeOrigin: true
      },
      '/micro': {
        target: 'http://127.0.0.1:8001',
        changeOrigin: true
      },
      '/biz': {
        target: 'http://127.0.0.1:8001',
        changeOrigin: true
      },
      '/general': {
        target: 'http://127.0.0.1:8001',
        changeOrigin: true
      },
      '/dooleenApi': {
        target: 'http://127.0.0.1:8001',
        changeOrigin: true
      },
      '/file': {
        target: 'http://127.0.0.1:8001',
        changeOrigin: true
      },
      '/group1': {
        target: 'http://192.168.43.121:8888',
        changeOrigin: true
      },
      '/datavisual': {
        target: 'http://127.0.0.1:2889',
        changeOrigin: true
      }
    }
  }
}